1. Field of the Invention
The present invention generally relates to computer systems having output devices and, more particularly, to computer systems which may be connected to different types and numbers of display devices for achieving compatibility therewith and improving uniformity of performance and user convenience.
2. Description of the Prior Art
Display devices have been long-preferred as output devices for computers and data processing systems of all kinds for the purpose of interaction and interfacing with a user. Displays may be rapidly changed and are capable of presenting a very large amount of information to a user. This information may concern the operation of the data processing system and applications running thereon as well as data being processed and entered by the user.
In order to increase the ease with which such information may be perceived and assimilated by a user, color displays of relatively high resolution are in widespread use and available from many manufacturers. While some standards have become accepted in the industry, uniformity of performance or even compatibility between data processors, applications which may be run thereon and output devices which may be connected thereto is not often provided by various output devices. For example, to achieve compatibility and uniformity of performance for printers, it is now common for software developers and suppliers to provide software printer drivers for a multiplicity of printers for control thereof by the contents of files which may be processed by the application. However, it is to be understood that achieving an acceptable degree of uniformity between printers is much more straightforward than for display devices since many printers are monochromatic and contain their own resident and often standardized fonts. Moreover, in printers, there is little interaction between most applications and the resolution or image patterns of individual image dots which may be produced, whereas, in displays, the application must often control the generation of the image in order to properly and accurately communicate information to the user. Also, more than one printer will seldom be used for production of a single document and absolute uniformity of performance is seldom expected.
In contrast, it is relatively common in present day workstations and other data processor systems to use a plurality of displays simultaneously. It is also common to freely substitute one type of display for another for upgrading of the system or to accommodate certain applications. Requirement for repair of a monitor may also cause a user to substitute one display for another. Displays also encompass greater variety than printers. For example, the display screen aspect ratios may vary, such as for data in various television signal formats or so-called "landscape" (longer horizontal axis) or "portrait" (longer vertical axis) displays; the latter being often preferred to display document images. Aspect ratios may also vary more subtly within either of these types of display, depending on display dimensions. Resolution in each of the horizontal and vertical directions may vary as will the number of pixels addressable in each coordinate direction, both as an incident of the display and the application or even the operating system.
Further, color reproduction will seldom be precisely consistent even between displays of the same type and from the same manufacturer. At the same time, there is a trend toward use of a larger color gamut in which more colors may be used by an application. Therefore, precise rendering of colors, hues, intensities and contrast has become increasingly important to users and critical to the appropriate interaction of the user with various applications.
As with printers, it is common to provide display drivers at least partially in software for ease of control and set-up although hardware display drivers are not uncommon in simple devices. This poses at least three types of problems.
The first and most critical type of problem stems from the practice in the art of using the display to present error message and system operating instructions. In a case where a display driver card is to be used with particular software, the card may be installed and the system booted before the software for the card is installed. During the boot procedure, the processor or bus manager will find the video card and look for the corresponding software files to instantiate the display driver and the video card object. If these files (e.g. library files) cannot be found, the system cannot draw to the display to even provide a prompt for installation of the required files in order to run the display card. Since a printer will not necessarily be present as an output device, all that can be done is to cause the production of some sounds which have sufficient syntactic content for simple diagnostic indication. The only reasonable alternatives to this scenario are to provide for low-level alternative display or emulation on the card, such as is done on VGA cards and which increases the expense thereof, provide a bootable floppy disk which contains the video driver (also an expense factor) or force the user, through documentation or otherwise, to install the software before installation of the board. However, any time such a problem is encountered, user confidence in the system may be adversely affected.
The second type of problem is somewhat less critical to system operation but still of extreme importance to the user interface presented by the display, particularly where two or more applications may be simultaneously running or where two or more display devices may be connected to the system. In the case where only one application is running at any given time, the display presentation is important to the extent of provision of generally appropriate colors and the development of sufficient color or grey-scale differences to be readily identifiable and distinct to the user. The exact color may be somewhat more important in regard to graphics applications but some variation is tolerable as long as the user can identify the color specified for the graphic being manipulated. Further, in such a case, the operator may specify false-color for display in order to distinguish similar hues. Likewise, some variation in the number of pixels addressed and the aspect ratio of the image is also tolerable.
However, when multiple displays are generated in different windows by plural applications, it becomes more important to consistently present colors and to match colors between applications in the way in which the applications interact with the display driver. Therefore, if different applications provide their own interfaces to the display, some mechanism must be provided to reconcile them. The problem becomes far more complex when plural displays are provided and provision is made, as is preferable, for various windows to be freely movable between displays or even divided between monitors (e.g. adjacent display areas formed on separately addressable devices such as is often provided in liquid crystal displays or fiber optic screen CRTs. In this case, the applications must each have the capacity to access the device driver for each of the displays and to synchronize display generation between them.
The third type of problem may be considered as a special case of the second. As discussed above, it is common to configure the system during the boot operation and all available displays will recognized at that time. However, where plural displays are provided, the configuration of the system may change such as when a particular monitor is turned on or off or a monitor is seized by another processor or user application. This latter type of facility may be provided where a workstation with plural display devices is to be used by more than one user and some display devices may be shared or exclusively allocated to one particular user. In any of these cases, some provision must be made for not only reconfiguration of the system during operation but also for the preservation of all user displays such as windows allocated to a user when the number of display devices available for those displays may be suddenly changed.
While some of these problems may be individually handled by special subroutines or objects invoked when a change is made, no approach to simultaneously addressing these problems has, to date, been proposed.